package box.tuson.com.tusonbox.circle;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;


public class CanvasUtil {

    /**
     * 绘制圆形图片
     * @param bmp 要重绘的图片
     * @param radius 所要重绘成的圆形图片的半径
     * @return Bitmap
     */
    public static Bitmap getCirCleBitmap(Bitmap bmp, int radius) {
        Bitmap p;
        //判断图片的大小与传入radius是否相等，如果不相等，那么将图片设置成长 宽都是radius的图片
        if (bmp.getWidth() != radius || bmp.getHeight() != radius) {
            p = Bitmap.createScaledBitmap(bmp, radius, radius, false);
        } else {
            p = bmp;
        }
        //最后输出的图片信息
        Bitmap bitmap = Bitmap.createBitmap(p.getWidth(),
											p.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        Paint paint = new Paint();
        Rect rect = new Rect(0, 0, p.getWidth(), p.getHeight());
        //画笔加上  抗锯齿标志，图像更加平滑
        paint.setAntiAlias(true);
        //如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示
        paint.setFilterBitmap(true);
        //防抖动
        paint.setDither(true);
        //透明色
        canvas.drawARGB(0, 0, 0, 0);
        //画笔的颜色
        paint.setColor(Color.parseColor("#BAB399"));
        //画出一个圆形
        canvas.drawCircle(p.getWidth() / 2 + 0.7f, p.getHeight() / 2 + 0.7f,
						  p.getWidth() / 2 + 0.1f, paint);
        //设置两张图片相交时的模式 ，就是在画布上遮上圆形的图片信息
        paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(p, rect, rect, paint);
        return bitmap;
    }
}

